博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分页技巧__实现第二个分页(主题列表中的分页)并抽取部分重复的代码
阅读量:5938 次
发布时间:2019-06-19

本文共 5310 字,大约阅读时间需要 17 分钟。

分页技巧__实现第二个分页(主题列表中的分页)并抽取部分重复的代码

先写Action--->Service-->PageBean-->Jsp

在topicAction中把公共的分页用的参数的代码放到BaseAction里面

ForumAction.java

@Controller@Scope("prototype")public class ForumAction extends BaseAction
{ /**板块列表*/ public String list() { List
forumList = forumService.findAll(); ActionContext.getContext().put("forumList", forumList);//放在map中 return "list"; } /**显示单个版块(主题列表)*/ public String show() { //准备数据:forum Forum forum = forumService.getById(model.getId()); ActionContext.getContext().put("forum", forum); //准备数据:topicList// List
topicList = topicService.findByForum(forum);// ActionContext.getContext().put("topicList", topicList); //准备分页信息 PageBean pageBean = topicService.getPageBeanByForum(pageNum, pageSize, forum); ActionContext.getContext().getValueStack().push(pageBean); return "show"; }}

TopicServiceImpl.java

@Service@Transactional@SuppressWarnings("unchecked")public class TopicServiceImpl extends DaoSupportImpl
implements TopicService{ @Deprecated public List
findByForum(Forum forum) { return getSession().createQuery(// //排序:所有置顶帖在最上面,并按最后更新的时间排序,让新状态的在最上面 // 怎么排序 "FROM Topic t WHERE t.forum=? ORDER BY (CASE t.type WHEN 2 THEN 2 ELSE 0 END) DESC, t.lastUpdateTime DESC")// .setParameter(0, forum)// .list(); } @Override public void save(Topic topic) { // 1,设置属性并保存 topic.setType(Topic.TYPE_NORMAL); topic.setReplyCount(0); topic.setLastReply(null); topic.setLastUpdateTime(topic.getPostTime()); getSession().save(topic); // 2,维护相关的特殊属性 Forum forum = topic.getForum(); forum.setTopicCount(forum.getTopicCount() + 1);//主题数量 forum.setArticleCount(forum.getArticleCount() + 1);//文章数量(主题数+回复数) forum.setLastTopic(topic);//最后发表的主题 getSession().update(forum); } public PageBean getPageBeanByForum(int pageNum, int pageSize, Forum forum) { //查询列表 List list = getSession().createQuery( "FROM Topic t WHERE t.forum=? ORDER BY (CASE t.type WHEN 2 THEN 2 ELSE 0 END) DESC, t.lastUpdateTime DESC")// .setParameter(0, forum)// .setFirstResult((pageNum - 1) * pageSize)// .setMaxResults(pageSize)// .list(); //查询总数量 Long count = (Long)getSession().createQuery(// "SELECT COUNT(*) FROM Topic t WHERE t.forum=? ORDER BY (CASE t.type WHEN 2 THEN 2 ELSE 0 END) DESC, t.lastUpdateTime DESC")// .setParameter(0, forum)// .uniqueResult(); return new PageBean(pageNum, pageSize, count.intValue(), list); }}

分页信息抽取出来

pageView.jspf

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ taglib prefix="s" uri="/struts-tags" %>
页次:${currentPage}/${pageCount}页   每页显示:${pageSize}条   总记录数:${recordCount}条
<%--当前页 --%>
${num}
<%--非当前页 --%>
${num}
转到:

forumAction>>show.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ taglib prefix="s" uri="/struts-tags" %>    【${forum.name}】中的主题列表    <%@ include file="/WEB-INF/jsp/public/commons.jspf" %>    
【${forum.name}】中的主题列表
>
论坛
> ${forum.name}
 
主题 作者 回复数 最后回复
${title}
  • ${author.name}
  • ${postTime}
${replyCount}
  • ${lastReply.author.name}
  • ${lastReply.postTime}
<%@ include file="/WEB-INF/jsp/public/pageView.jspf" %>
说明:
1,主题默认按最后更新的时间降序排列。最后更新时间是指主题最后回复的时间,如果没有回复,就是主题发表的时间。
2,帖子有普通、置顶、精华之分。置顶贴始终显示在最上面,精华贴用不同的图标标示。

转载于:https://www.cnblogs.com/justdoitba/p/7965570.html

你可能感兴趣的文章
程序中减少使用if语句的方法集锦
查看>>
struts2 在线用户记录
查看>>
Eclipse常用快捷键
查看>>
mount error 12 = Cannot allocate memory
查看>>
Spring工作原理详解
查看>>
Protobuf动态解析那些事儿
查看>>
浮点数:一种有漏洞的抽象【译】
查看>>
mysql修改初始密码
查看>>
Android TextView 使用替换构建出不同样式的字符串
查看>>
Go36-13-结构体及其方法
查看>>
Go36-32-context.Context
查看>>
android TextView中文字通过SpannableString设置属性
查看>>
Linux配置文件字体颜色
查看>>
JSP九大内置对象及四个作用域
查看>>
我的友情链接
查看>>
Exsi 5.0 物理端口捆绑+VRRP+DvSwitch配置
查看>>
Dubbo下一站:Apache顶级项目
查看>>
nginx负载均衡&文件服务器配置&虚拟目录&代理&refer防盗链
查看>>
iOS xib开发小技巧
查看>>
Java线程:新特征-线程池
查看>>